package com.mayfool.gitmanager.core.entity;

import java.io.Serial;
import java.io.Serializable;
import java.util.Set;

/**
 * @author zhou.xu
 * @description: 任务信息实体类
 * 用于存储任务的基本信息，包括任务名称、工作空间路径、关联项目集合和开发分支
 * 实现了Serializable接口以支持序列化，便于数据持久化
 * @date 2025/3/10 21:44
 * @since JDK 1.8
 */
public class TaskInfo implements Serializable {
    
    @Serial
    private static final long serialVersionUID = -1868434391823158475L;

    /**
     * 任务名称
     */
    private String taskName;

    /**
     * 工作空间路径
     * 存储任务相关项目的本地工作目录
     */
    private String workspacePath;

    /**
     * 关联项目集合
     * 存储任务包含的所有Git项目信息
     */
    private Set<ProjectInfo> projects;

    /**
     * 开发分支名称
     * 当前任务的开发分支，默认为develop
     */
    private String developBranch;

    /**
     * 默认构造函数
     */
    public TaskInfo() {
    }

    /**
     * 完整构造函数
     * @param taskName 任务名称
     * @param workspacePath 工作空间路径
     * @param projects 关联项目集合
     * @param developBranch 开发分支名称
     */
    public TaskInfo(String taskName, String workspacePath, Set<ProjectInfo> projects, String developBranch) {
        this.taskName = taskName;
        this.workspacePath = workspacePath;
        this.projects = projects;
        this.developBranch = developBranch;
    }

    // Getter方法
    public String getTaskName() {
        return taskName;
    }

    public String getWorkspacePath() { 
        return workspacePath; 
    }

    public Set<ProjectInfo> getProjects() { 
        return projects; 
    }

    public String getDevelopBranch() { 
        return developBranch; 
    }

    // Setter方法
    public void setTaskName(String taskName) {
        this.taskName = taskName;
    }

    public void setWorkspacePath(String path) { 
        workspacePath = path; 
    }

    public void setProjects(Set<ProjectInfo> list) { 
        projects = list; 
    }

    public void setDevelopBranch(String branch) { 
        developBranch = branch; 
    }

    /**
     * 重写toString方法
     * 用于在UI组件中显示任务名称
     * @return 任务名称
     */
    @Override
    public String toString() {
        return taskName;
    }
}